Fork me on GitHub

spring boot 配置热部署

什么是热部署?

  热部署,就是在应用正在运行的时候升级软件,却不需要重新启动应用。在开发过程中,热部署对我们的开发速度有很大的帮助。例如在我们修改Bug的时候对Jsp或者Java类进行了修改在不重新启动WEB服务器就能让修改生效,配置文件除外

怎么样进行热部署

如何在idea中设置Tomcat热部署

1.首先打开idea,点击右上角的下拉框,选中Edit Configurations,如下图:

2.点击对话框左上角的加号,选择Tomcat Server,再选择Local子菜单

3.选择Deployment选项卡,对需要部署的项目文件做设置,点击加号选择Artifact,然后选择war exploded方式,这种方式是以文件夹方式部署的,而war是以war包的方式,exploded方式支持热部署,注意一定要选择exploded方式,否则无法实现热部署。

4.然后回到Server选项卡,设置On Update action和On frame detectivation选项,都设置为Update classes and resources,表示classes文件和资源文件都更新

5.如果只设置On Update action选项,则需要每次自己手动点击更新,设置了On frame detectivation,会监测窗口,idea窗口发生切换则自动更新文件

在运行模式下,Java文件更新不会立即生效,可以选择debug模式运行。

spring boot热部署配置

spring boot致力于快速应用开发领域,内置了很多的组件,让我们摆脱了spring MVC下冗余的配置,使我们的开发变得更加的便捷快速。spring boot在自动嵌入了Tomcat,无需部署war文件,便可使项目快速运行起来,因此spring boot的热部署也与Tomcat的热部署不一样。
spring boot的热部署是使用devtools模块。devtools模块,是为开发者服务的一个模块。主要的功能就是代码修改后一般在5秒之内就会自动重新加载至服务器,相当于restart成功。

原理分析

在发现代码有更改之后,自动重新启动应用,但是其速度比手动停止后再启动还要快些,更快这里指的不是节省出来的手工操作的时间。

  • 一个Base ClassLoader加载器,用于加载不会改变的第三方依赖的jar;
  • 另一个Restart ClassLoader加载器,用于加载自己编写的类;
  • 执行流程:当应用重启后,原先的Restart ClassLoader被丢掉、重新new一个Restart ClassLoader来加载这些修改过的东西,而Base ClassLoader却没有变化。这就是devtools重启速度快的原因。

如何实现热部署

1.修改项目的pom.xml文件

在依赖中加入:

1
2
3
4
5
6
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<version>1.5.7.RELEASE</version>
<optional>true</optional>
</dependency>

在构建中加入:

1
2
3
4
5
6
7
8
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
<addResources>true</addResources>
</configuration>
</plugin>

2.修改设置

在idea中,还需要到设置里将project automatically勾选上;File->Setting,然后搜索“compiler” 将右侧project automatically勾上。

3.修改IDE配置

使用ctrl+shift+a 快捷键搜索Registry,选择选择搜索出来的第一个,进入后找到“compiler.automake.allow.when.app.running”,勾上开启此功能即可。

4.应用热部署

重新启动项目即可实现热部署,改动任意代码会立即生效,不用再每次重新启动项目

本文标题:spring boot 配置热部署

文章作者:Jeremy

发布时间:2018年03月28日 - 14:03

最后更新:2018年04月19日 - 17:04

原始链接:http://yoursite.com/2018/03/28/spring boot配置热部署/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

-------------本文结束感谢您的阅读-------------
你的支持是我最大的动力